package com.heima.pojo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;

/**
 * 区域表实体类
 * 与数据库表 `tb_area` 直接映射，用于存储地区层级信息（如省、市、区/县）
 */
@Data
@TableName("tb_area") // 明确关联数据库表名
public class TbArea implements Serializable {

    private static final long serialVersionUID = 1L; // 序列化版本号，确保序列化兼容性

    /**
     * 区域主键ID，自增
     * 数据库字段：`id`，bigint类型，非空且自增
     */
    @TableId(type = IdType.AUTO) // 标记为主键，使用数据库自增策略（与表中AUTO_INCREMENT匹配）
    private Integer id;

    /**
     * 父区域ID
     * 数据库字段：`parent_id`，int类型，非空，默认0（0表示顶级区域，如省份）
     * 业务含义：用于构建区域层级关系（如市的parent_id对应省的id，区的parent_id对应市的id）
     */
    private Integer parentId;

    /**
     * 区域名称
     * 数据库字段：`area_name`，varchar(20)，非空，默认空字符串
     * 示例值："四川省"、"成都市"、"锦江区"
     */
    private String areaName;

    /**
     * 地区编码
     * 数据库字段：`ad_code`，varchar(10)，非空，默认"0"
     * 业务含义：对应国家标准地区编码（如510000代表四川省，510100代表成都市），用于关联其他表（如tb_node的area_code）
     */
    private String adCode;

    /**
     * 城市区号
     * 数据库字段：`city_code`，varchar(10)，可为空
     * 示例值："028"（成都区号）、"010"（北京区号），仅城市级及以下区域有值
     */
    private String cityCode;

    /**
     * 地区级别
     * 数据库字段：`area_level`，varchar(10)，可为空
     * 常见值："province"（省份）、"city"（城市）、"district"（区/县），用于区分区域层级
     */
    private String areaLevel;
}